listbox: Handle unpaired releases as well
authorMatthias Clasen <mclasen@redhat.com>
Mon, 27 Nov 2017 00:52:01 +0000 (19:52 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 27 Nov 2017 00:52:01 +0000 (19:52 -0500)
Same as for flowbox in the previous commit.

gtk/gtklistbox.c

index 97a98d0a4b5a19da8ac29096751ce549cfbdbb4d..4a8f244fa8be2b449a3e4dcb1a89019678d18d6b 100644 (file)
@@ -243,6 +243,12 @@ static void gtk_list_box_multipress_gesture_released (GtkGestureMultiPress *gest
                                                       gdouble               x,
                                                       gdouble               y,
                                                       GtkListBox           *box);
+static void gtk_list_box_multipress_unpaired_release (GtkGestureMultiPress *gesture,
+                                                      gdouble               x,
+                                                      gdouble               y,
+                                                      guint                 button,
+                                                      GdkEventSequence     *sequence,
+                                                      GtkListBox           *box);
 static void gtk_list_box_multipress_gesture_stopped  (GtkGestureMultiPress *gesture,
                                                       GtkListBox           *box);
 
@@ -603,7 +609,8 @@ gtk_list_box_init (GtkListBox *box)
                     G_CALLBACK (gtk_list_box_multipress_gesture_released), box);
   g_signal_connect (priv->multipress_gesture, "stopped",
                     G_CALLBACK (gtk_list_box_multipress_gesture_stopped), box);
-
+  g_signal_connect (priv->multipress_gesture, "unpaired-released",
+                    G_CALLBACK (gtk_list_box_multipress_unpaired_release), box);
 
   g_signal_connect (box, "notify::parent", G_CALLBACK (gtk_list_box_parent_cb), NULL);
 }
@@ -1773,6 +1780,26 @@ get_current_selection_modifiers (GtkWidget *widget,
     }
 }
 
+static void
+gtk_list_box_multipress_unpaired_release (GtkGestureMultiPress *gesture,
+                                          gdouble               x,
+                                          gdouble               y,
+                                          guint                 button,
+                                          GdkEventSequence     *sequence,
+                                          GtkListBox           *box)
+{
+  GtkListBoxPrivate *priv = BOX_PRIV (box);
+  GtkListBoxRow *row;
+
+  if (!priv->activate_single_click)
+    return;
+
+  row = gtk_list_box_get_row_at_y (box, y);
+
+  if (row)
+    gtk_list_box_select_and_activate (box, row);
+}
+
 static void
 gtk_list_box_multipress_gesture_released (GtkGestureMultiPress *gesture,
                                           guint                 n_press,